[アップデート] AWS Config 適合パックでプロセスチェックルールをデプロイできるようになりました
コンバンハ、千葉(幸)です。
AWS Config 適合パックにより、手動でのプロセスチェックを行うルールをデプロイできるようになりました!
自動的に準拠状況を確認できない非リソースに対する確認項目についても、Config ルールの一つとして管理できるようになりました。
何が変わったのか
AWS Config 適合パックは、 Config ルールと修復アクションをテンプレートで定義し、一括で管理できる仕組みです。
デプロイされたルールにより各種リソースに対して評価が行われ、準拠状態にあるかどうかが判断されます。
ルールが何を基準に評価を行うかは、ソースルールとして設定したものにより決定されます。ソースルールには AWS マネジードルールかカスタムルール( カスタマー側で Lambda 関数として定義 )を設定できます。
ルールには修復アクションを関連づけられます。これはルールにより非準拠状態であると判断されたリソースに対して修正を行うものです。自動で修復を行うような設定も可能です。
適合パックについては以下もあわせてご参照ください。
今回のアップデートにより、ソースルールとして AWS マネージドルールAWS_CONFIG_PROCESS_CHECK
を持つルールをデプロイできるようになりました。
このルールはプロセスチェックルールと呼ばれます。プロセスチェックルールでは、ユーザーが直接確認を行うような評価項目を管理できます。
例えば以下のような項目です。
- ルートアカウントが使用された際に検知できる仕組みはあるか?
- 権限は最小化されているか?
- アカウントに登録された連絡先が最新か?
従来の Config ルールではリソースの設定値を参照して機械的に判別することしかできませんでしたが、人によるチェックを行うものも同じく Config ルールとして管理できるようになりました。
各アカウントで横断的に準拠すべき基準を適合パックテンプレートで定義しておき、各アカウントで人の目も含めながらチェックを行う、そして準拠状況を一元管理する、ということができます。
ちなみに Config ルールは適合パックを使用せず個別に作成できますが、プロセスチェックルールは適合パックでのみデプロイできます。
プロセスチェックルールの書式
適合パックテンプレートでプロセスチェックルールを定義する際は、以下のような書式をとります。
################################################################################ # # Conformance Pack template for process check # ################################################################################ Resources: AWSConfigProcessCheck: Properties: ConfigRuleName: RuleName Description: Description of Rule Source: Owner: AWS SourceIdentifier: AWS_CONFIG_PROCESS_CHECK Type: AWS::Config::ConfigRule
ソースとしてAWS_CONFIG_PROCESS_CHECK
を指定する以外は、ルール名や説明など、自由に定義できます。
やってみた
今回は以下のテンプレートを用いて適合パックをデプロイしてみます。
ここでは CIS AWS Foundations Benchmark v1.3 の各 Control ID に対応する形で AWS Config ルールが作成され、準拠状況を確認する仕組みとなっています。( ID に対して重複するルールあり。)
プロセスチェックルールが多く含まれています。
Control ID | AWS Config Rule | プロセスチェックルールか |
---|---|---|
1.1 | account-contact-details-configured | はい |
1.2 | account-security-contact-configured | はい |
1.3 | account-security-questions-configured | はい |
1.4 | iam-root-access-key-check | - |
1.5 | root-account-mfa-enabled | - |
1.6 | root-account-hardware-mfa-enabled | - |
1.7 | root-account-regular-use | はい |
1.8 | iam-password-policy | - |
1.9 | iam-password-policy | - |
1.10 | mfa-enabled-for-iam-console-access | - |
1.11 | iam-user-console-and-api-access-at-creation | はい |
1.12 | iam-user-unused-credentials-check | - |
1.13 | iam-user-single-access-key | はい |
1.14 | access-keys-rotated | - |
1.15 | iam-user-no-policies-check | - |
1.15 | iam-no-inline-policy-check | - |
1.15 | iam-user-group-membership-check | - |
1.16 | iam-policy-no-statements-with-admin-access | - |
1.17 | iam-support-role-created | はい |
1.18 | ec2-instance-role-assigned | はい |
1.19 | iam-expired-certificates | はい |
1.20 | s3-account-level-public-access-blocks | - |
1.21 | iam-access-analyzer-enabled | はい |
1.22 | iam-central-user-management | はい |
2.1.1 | s3-bucket-server-side-encryption-enabled | - |
2.1.2 | s3-bucket-ssl-requests-only | - |
2.2.1 | ec2-ebs-encryption-by-default | - |
2.2.1 | encrypted-volumes | - |
3.1 | multi-region-cloudtrail-enabled | - |
3.2 | cloud-trail-log-file-validation-enabled | - |
3.3 | s3-bucket-public-read-prohibited | - |
3.3 | s3-bucket-public-write-prohibited | - |
3.3 | s3-account-level-public-access-blocks | - |
3.3 | s3-bucket-policy-grantee-check | - |
3.4 | cloud-trail-cloud-watch-logs-enabled | - |
3.5 | config-enabled-all-regions | はい |
3.6 | s3-bucket-logging-enabled | - |
3.7 | cloud-trail-encryption-enabled | - |
3.8 | cmk-backing-key-rotation-enabled | - |
3.9 | vpc-flow-logs-enabled | - |
3.10 | cloudtrail-s3-dataevents-enabled | - |
3.11 | cloudtrail-s3-dataevents-enabled | - |
4.1 | alarm-unauthorized-api-calls | はい |
4.2 | alarm-sign-in-without-mfa | はい |
4.3 | alarm-root-account-use | はい |
4.4 | alarm-iam-policy-change | はい |
4.5 | alarm-cloudtrail-config-change | はい |
4.6 | alarm-console-auth-failures | はい |
4.7 | alarm-kms-disable-or-delete-cmk | はい |
4.8 | alarm-s3-bucket-policy-change | はい |
4.9 | alarm-aws-config-change | はい |
4.10 | alarm-vpc-secrity-group-change | はい |
4.11 | alarm-vpc-nacl-change | はい |
4.12 | alarm-vpc-network-gateway-change | はい |
4.13 | alarm-vpc-route-table-change | はい |
4.14 | alarm-vpc-change | はい |
4.15 | alarm-organizations-change | はい |
5.1 | vpc-networkacl-open-admin-ports | はい |
5.2 | restricted-common-ports | - |
5.3 | vpc-default-security-group-closed | - |
5.4 | vpc-networkacl-open-admin-ports | はい |
適合パックのデプロイ
早速作成していきます。
適合パックのデプロイ画面より、お目当てのサンプルテンプレートを指定して次へ進みます。
名称を指定して次へ進みます。
パラメータを設定することもできます。このテンプレートで設定できるパラメータは以下から確認してください。
確認を行い、デプロイを行います。
(以前はデプロイ時にテンプレートを出力する先の S3 バケットを指定する項目があったように記憶していますが、 2020年12月現在のコンソールではそのような箇所はありませんでした。)
数分程度でデプロイが完了します。
裏側で呼び出されている CloudFormation スタックでも作成が確認できます。今回は 58 ルールが作成されました。
適合パック画面からルールの確認
デプロイされたルールを確認していきます。
適合パックの詳細画面から遷移すると、この時点では全てのルールが表示されていません。
コンプライアンスが「準拠」「非準拠」いずれかのルールのみがここに表示されるため、プロセスチェックルールや一部のルールはここに反映されていない状態です。
AWS CLI でルールの確認
AWS CLI で一覧を確認します。
今回は適合パックのデプロイ前に既存の Config ルールが存在しない環境で試しています。
以下のように--query
を指定し、プロセスチェックルールを一覧化してみました。29個あります。
% aws configservice describe-config-rules\ --query 'ConfigRules[?Source.SourceIdentifier==`AWS_CONFIG_PROCESS_CHECK`].ConfigRuleName' [ "account-contact-details-configured-conformance-pack-mqp9xv0fb", "account-security-contact-configured-conformance-pack-mqp9xv0fb", "account-security-questions-configured-conformance-pack-mqp9xv0fb", "alarm-aws-config-change-conformance-pack-mqp9xv0fb", "alarm-cloudtrail-config-change-conformance-pack-mqp9xv0fb", "alarm-console-auth-failures-conformance-pack-mqp9xv0fb", "alarm-iam-policy-change-conformance-pack-mqp9xv0fb", "alarm-kms-disable-or-delete-cmk-conformance-pack-mqp9xv0fb", "alarm-organizations-change-conformance-pack-mqp9xv0fb", "alarm-root-account-use-conformance-pack-mqp9xv0fb", "alarm-s3-bucket-policy-change-conformance-pack-mqp9xv0fb", "alarm-sign-in-without-mfa-conformance-pack-mqp9xv0fb", "alarm-unauthorized-api-calls-conformance-pack-mqp9xv0fb", "alarm-vpc-change-conformance-pack-mqp9xv0fb", "alarm-vpc-nacl-change-conformance-pack-mqp9xv0fb", "alarm-vpc-network-gateway-change-conformance-pack-mqp9xv0fb", "alarm-vpc-route-table-change-conformance-pack-mqp9xv0fb", "alarm-vpc-secrity-group-change-conformance-pack-mqp9xv0fb", "config-enabled-all-regions-conformance-pack-mqp9xv0fb", "ec2-instance-role-assigned-conformance-pack-mqp9xv0fb", "iam-access-analyzer-enabled-conformance-pack-mqp9xv0fb", "iam-central-user-management-conformance-pack-mqp9xv0fb", "iam-expired-certificates-conformance-pack-mqp9xv0fb", "iam-support-role-created-conformance-pack-mqp9xv0fb", "iam-user-console-and-api-access-at-creation-conformance-pack-mqp9xv0fb", "iam-user-single-access-key-conformance-pack-mqp9xv0fb", "root-account-regular-use-conformance-pack-mqp9xv0fb", "vpc-networkacl-open-admin-ports-conformance-pack-mqp9xv0fb", "vpc-peering-least-access-conformance-pack-mqp9xv0fb" ]
プロセスチェックルールでないルールも出力してみます。こちらも29個なので、合計して58個あります。
% aws configservice describe-config-rules\ --query 'ConfigRules[?Source.SourceIdentifier!=`AWS_CONFIG_PROCESS_CHECK`].ConfigRuleName' [ "access-keys-rotated-conformance-pack-mqp9xv0fb", "cloud-trail-cloud-watch-logs-enabled-conformance-pack-mqp9xv0fb", "cloud-trail-encryption-enabled-conformance-pack-mqp9xv0fb", "cloud-trail-log-file-validation-enabled-conformance-pack-mqp9xv0fb", "cloudtrail-s3-dataevents-enabled-conformance-pack-mqp9xv0fb", "cmk-backing-key-rotation-enabled-conformance-pack-mqp9xv0fb", "ec2-ebs-encryption-by-default-conformance-pack-mqp9xv0fb", "encrypted-volumes-conformance-pack-mqp9xv0fb", "iam-no-inline-policy-check-conformance-pack-mqp9xv0fb", "iam-password-policy-conformance-pack-mqp9xv0fb", "iam-policy-no-statements-with-admin-access-conformance-pack-mqp9xv0fb", "iam-root-access-key-check-conformance-pack-mqp9xv0fb", "iam-user-group-membership-check-conformance-pack-mqp9xv0fb", "iam-user-no-policies-check-conformance-pack-mqp9xv0fb", "iam-user-unused-credentials-check-conformance-pack-mqp9xv0fb", "mfa-enabled-for-iam-console-access-conformance-pack-mqp9xv0fb", "multi-region-cloudtrail-enabled-conformance-pack-mqp9xv0fb", "restricted-common-ports-conformance-pack-mqp9xv0fb", "root-account-hardware-mfa-enabled-conformance-pack-mqp9xv0fb", "root-account-mfa-enabled-conformance-pack-mqp9xv0fb", "s3-account-level-public-access-blocks-conformance-pack-mqp9xv0fb", "s3-bucket-logging-enabled-conformance-pack-mqp9xv0fb", "s3-bucket-policy-grantee-check-conformance-pack-mqp9xv0fb", "s3-bucket-public-read-prohibited-conformance-pack-mqp9xv0fb", "s3-bucket-public-write-prohibited-conformance-pack-mqp9xv0fb", "s3-bucket-server-side-encryption-enabled-conformance-pack-mqp9xv0fb", "s3-bucket-ssl-requests-only-conformance-pack-mqp9xv0fb", "vpc-default-security-group-closed-conformance-pack-mqp9xv0fb", "vpc-flow-logs-enabled-conformance-pack-mqp9xv0fb" ]
プロセスチェックルールの操作
「ルール」の画面からルール一覧を確認していきます。タイプが「Process check」となっているものはすべてコンプライアンスが未評価の状態です。
試しに一つルールを選択してみます。
ルールの詳細画面はこのようになっています。
「説明」欄の内容を機械翻訳すると以下の内容となります。
AWSカスタマーサービスへのサポートのための個人認証に使用できるセキュリティ質問が設定されていることを確認します。AWS Management Consoleの「マイアカウント」セクションで、3つのセキュリティ上の質問が設定されていることを確認します。
「コンプライアンスを編集」を押下します。
コンプライアンスを「準拠」「非準拠」「該当しません」のいずれかから選択し、必要に応じてコメントを入力し、「保存」を押下します。
設定した内容がこのように反映されます。
適合パックの詳細画面にも表示されるようになりました。
プロセスチェックルールの使い方が確認できました!
終わりに
AWS Config 適合パックで使用できるようになったプロセスチェックルールについての確認でした。
監査やセキュリティチェック項目の中には、どうしても人の目で確認しなくてはいけないものがあります。これまでは「一部は適合パック、一部はまた別のソリューションでチェック」というアプローチが必要でしたが、今回のアップデートでまとめて一つのテンプレートで管理できるようになりました。
プロセスチェックルールはテンプレートで定義すれば独自のものを使用することもできますので、環境にあわせて活用してみてはいかがでしょうか。
以上、千葉(幸)がお送りしました。